/*定义学号(id)，姓名(name)，C成绩(cscore)，Java成绩(javascore)的学员结构体，定义3个学员
的学员结构体数组，动态初始化键盘输入，遍历输出，输出结果参考如下（具体数据按照键盘输入值，下图仅作参考）：初始化、输出要求函数编写
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct studentdata
{
    int IID;
    char NName[20];
    float cscore;
    float javascore;
    float Avg;
    struct studentdata *pnext;
}STU;
//申请空间
STU *mkdirData()
{
    STU* stu =(STU*)malloc(sizeof(STU));
    if(NULL == stu)
    {
        exit(EXIT_FAILURE);
    }
    else
    {
        memset(stu,0,sizeof(STU));
    }
    return stu;
}
//输入信息
void myInput(STU *stu)
{
    if(NULL != stu)
    {
        printf("请输入学生的ID、Name、C成绩、Java成绩:\n");
        scanf("%d%s%f%f",&stu->IID,stu->NName,&stu->cscore,&stu->javascore);
        (*stu).Avg=((*stu).cscore+(*stu).javascore)/2;
    }
}
//输出信息
void display(STU *stu)
{
    if(NULL == stu)
    {
        return;
    }
    printf("ID\tName\tCScore\tJavaScore\tAvg\n");
    STU *node=stu;
    while(NULL != node)
    {
        printf("%d\t%s\t%g\t%g\t%g\n",node->IID,node->NName,node->cscore,node->javascore,node->Avg);
        node=node->pnext;
    }
}
int main(void)
{
    STU *head=NULL;
    STU *node=NULL;
    int i=0;
    for(i=0;i<3;i++)
    {
        node=mkdirData();
        myInput(node);
        if(NULL==head)
        {
            head=node;
        }
        else
        {
            node->pnext=head;
            head=node;
        }
    }
    display(head);
    return 0;
}
